﻿

CREATE OR REPLACE FUNCTION HOTEL.FUNC_CORRELATIVO_TB_HABITACION()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(ID_HABITACION::NUMERIC) FROM HOTEL.TB_HABITACION; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.ID_HABITACION =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.ID_HABITACION = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.ID_HABITACION = CORRELATIVO + 1;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_HABITACION
  BEFORE INSERT
  ON HOTEL.TB_HABITACION
  FOR EACH ROW
  EXECUTE PROCEDURE HOTEL.FUNC_CORRELATIVO_TB_HABITACION();



--==================================


CREATE OR REPLACE FUNCTION HOTEL.FUNC_CORRELATIVO_TB_TARIFA()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TF.id_tarifa::NUMERIC) FROM HOTEL.tb_tarifa_hotel TF WHERE TF.id_habitacion=NEW.id_habitacion AND TF.id_lista_hotel=NEW.id_lista_hotel; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.id_tarifa =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.id_tarifa = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.id_tarifa = CORRELATIVO + 1;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_TARIFA
  BEFORE INSERT
  ON HOTEL.tb_tarifa_hotel
  FOR EACH ROW
  EXECUTE PROCEDURE HOTEL.FUNC_CORRELATIVO_TB_TARIFA();






--==================================


CREATE OR REPLACE FUNCTION ALMACEN.FUNC_CORRELATIVO_TB_GRUPO()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.idgrupo::NUMERIC) FROM almacen.tb_grupo tb; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.idgrupo =  '1';
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.idgrupo = '1';--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.idgrupo = (CORRELATIVO + 1)::text;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_GRUPO
  BEFORE INSERT
  ON almacen.tb_grupo
  FOR EACH ROW
  EXECUTE PROCEDURE ALMACEN.FUNC_CORRELATIVO_TB_GRUPO();



--==============================================




CREATE OR REPLACE FUNCTION ALMACEN.FUNC_CORRELATIVO_TB_FAMILIA()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.IDFAMILIA::NUMERIC) FROM almacen.TB_FAMILIA tb; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.IDFAMILIA =  '1';
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.IDFAMILIA = '1';--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.IDFAMILIA = (CORRELATIVO + 1)::text;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_FAMILIA
  BEFORE INSERT
  ON almacen.TB_FAMILIA
  FOR EACH ROW
  EXECUTE PROCEDURE ALMACEN.FUNC_CORRELATIVO_TB_FAMILIA();







--==============================================




CREATE OR REPLACE FUNCTION COMMON.FUNC_CORRELATIVO_TB_UNIDAD()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.ID_UNIDAD::NUMERIC) FROM COMMON.TB_UNIDAD tb; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.ID_UNIDAD =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.ID_UNIDAD = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.ID_UNIDAD = CORRELATIVO + 1;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_UNIDAD
  BEFORE INSERT
  ON COMMON.TB_UNIDAD
  FOR EACH ROW
  EXECUTE PROCEDURE COMMON.FUNC_CORRELATIVO_TB_UNIDAD();



--========================================
SELECT  MAX(TB.ID_PRODUCTO::NUMERIC) FROM ALMACEN.TB_PRODUCTO tb; 


CREATE OR REPLACE FUNCTION ALMACEN.FUNC_CORRELATIVO_TB_PRODUCTO()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.ID_PRODUCTO::NUMERIC) FROM ALMACEN.TB_PRODUCTO tb WHERE isnumeric(tb.ID_PRODUCTO); 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.ID_PRODUCTO =  '1';
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.ID_PRODUCTO = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.ID_PRODUCTO = (CORRELATIVO + 1)::TEXT;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_PRODUCTO
  BEFORE INSERT
  ON ALMACEN.TB_PRODUCTO
  FOR EACH ROW
  EXECUTE PROCEDURE ALMACEN.FUNC_CORRELATIVO_TB_PRODUCTO();





CREATE OR REPLACE FUNCTION caja.FUNC_CORRELATIVO_TB_CAJA_BANCO()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.id_caja::NUMERIC) FROM caja.tb_caja_banco tb; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.id_caja =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.id_caja = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.id_caja = CORRELATIVO + 1;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_tb_caja_banco
  BEFORE INSERT
  ON caja.tb_caja_banco
  FOR EACH ROW
  EXECUTE PROCEDURE caja.FUNC_CORRELATIVO_TB_CAJA_BANCO();




CREATE OR REPLACE FUNCTION CAJA.FUNC_CORRELATIVO_TB_MOVIMIENTO()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.id_movimiento::NUMERIC) FROM caja.tb_movimiento tb WHERE TB.id_sucursal_mov=NEW.id_sucursal_mov; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.id_movimiento =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.id_movimiento = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.id_movimiento = CORRELATIVO + 1;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_MOVIMIENTO
  BEFORE INSERT
  ON caja.TB_MOVIMIENTO
  FOR EACH ROW
  EXECUTE PROCEDURE CAJA.FUNC_CORRELATIVO_TB_MOVIMIENTO();






CREATE OR REPLACE FUNCTION CREDITOS.FUNC_CORRELATIVO_TB_CREDITOS()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.ID_CREDITO::NUMERIC) FROM CREDITOS.TB_CREDITO tb WHERE TB.ID_SUCURSAL_CREDITO=NEW.ID_SUCURSAL_CREDITO; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.ID_CREDITO =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.ID_CREDITO = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.ID_CREDITO = (CORRELATIVO + 1)::TEXT;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_CREDITO
  BEFORE INSERT
  ON CREDITOS.TB_CREDITO
  FOR EACH ROW
  EXECUTE PROCEDURE CREDITOS.FUNC_CORRELATIVO_TB_CREDITOS();



--************************




CREATE OR REPLACE FUNCTION CREDITOS.FUNC_CORRELATIVO_TB_CUOTA()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.ID_CUOTA::NUMERIC) FROM CREDITOS.TB_CUOTA tb WHERE TB.ID_SUCURSAL_CREDITO=NEW.ID_SUCURSAL_CREDITO AND TB.ID_CREDITO=NEW.ID_CREDITO; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.ID_CUOTA =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.ID_CUOTA = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.ID_CUOTA = (CORRELATIVO + 1)::TEXT;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_CUOTA
  BEFORE INSERT
  ON CREDITOS.TB_CUOTA
  FOR EACH ROW
  EXECUTE PROCEDURE CREDITOS.FUNC_CORRELATIVO_TB_CUOTA();


  



select *from ventas.tb_facturacion

CREATE OR REPLACE FUNCTION common.func_correlativo_comprobantes()
  RETURNS trigger AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	MUMERO_CORREL TEXT;
BEGIN
	IF exists(select *from common.tb_series_comprobante where id_tranzaccion=new.id_tranzaccion and --new.idtranzaccion and 
								id_documento=new.id_documento and 
								serie=new.serie_facturacion and id_sucursal=new.id_sucursal and id_estado=1) then
								
		select  max(numero) into CORRELATIVO from common.tb_series_comprobante where id_tranzaccion=new.id_tranzaccion and --new.idtranzaccion and 
								id_documento=new.id_documento and 
								serie=new.serie_facturacion and id_sucursal=new.id_sucursal and id_estado=1 ;
		if CORRELATIVO IS NULL THEN
			MUMERO_CORREL='1';
		ELSE
			MUMERO_CORREL=(CORRELATIVO+1)::TEXT;
		END IF;
		--IF NEW.IDTIPVENTA=2 THEN  --SI ES UNA VENTA AL CREDITO GENERO EL CORRELATIVO 
		--PARA LA FACTURA NADA Y LA FUNCION OPERACIONES.FUNC_CORRELATIVO_COMPROBANTES_MOV() GENERA EL DOCUMENTO PARA MOVIMEINTOS LOS RECIBOS DE CONTROL
			UPDATE common.tb_series_comprobante SET NUMERO =MUMERO_CORREL::integer WHERE   
								id_tranzaccion=new.id_tranzaccion and --new.idtranzaccion and 
								id_documento=new.id_documento and 
								serie=new.serie_facturacion and id_sucursal=new.id_sucursal and id_estado=1;
		--END IF;
	ELSE
		--RAISE EXCEPTION 'NO SE HA GENERADO EL CORRELATIVO OPERACION BLOQUEDA';
	end if;
RETURN NEW;
END;$BODY$
  LANGUAGE plpgsql VOLATILE


  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_COMPROBANTES
  BEFORE INSERT
  ON VENTAS.TB_FACTURACION
  FOR EACH ROW
  EXECUTE PROCEDURE COMMON.func_correlativo_comprobantes();





CREATE OR REPLACE FUNCTION common.func_correlativo_comprobantes_mov()
  RETURNS trigger AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	MUMERO_CORREL TEXT;
BEGIN
	IF exists(select *from common.tb_series_comprobante where id_tranzaccion=new.id_tranzaccion_mov and --new.idtranzaccion and 
								id_documento=new.id_documento_mov and 
								serie=new.SERIE and id_sucursal=new.id_sucursal_mov and id_estado=1) then
								
		select  max(numero) into CORRELATIVO from common.tb_series_comprobante where id_tranzaccion=new.id_tranzaccion_mov and --new.idtranzaccion and 
								id_documento=new.id_documento_mov and 
								serie=new.SERIE and id_sucursal=new.id_sucursal_mov and id_estado=1 ;
		if CORRELATIVO IS NULL THEN
			MUMERO_CORREL='1';
		ELSE
			MUMERO_CORREL=(CORRELATIVO+1)::TEXT;
		END IF;
		--IF NEW.IDTIPVENTA=2 THEN  --SI ES UNA VENTA AL CREDITO GENERO EL CORRELATIVO 
		--PARA LA FACTURA NADA Y LA FUNCION OPERACIONES.FUNC_CORRELATIVO_COMPROBANTES_MOV() GENERA EL DOCUMENTO PARA MOVIMEINTOS LOS RECIBOS DE CONTROL
			UPDATE common.tb_series_comprobante SET NUMERO =MUMERO_CORREL::integer WHERE   
								id_tranzaccion=new.id_tranzaccion_mov and --new.idtranzaccion and 
								id_documento=new.id_documento_mov and 
								serie=new.SERIE and id_sucursal=new.id_sucursal_mov and id_estado=1;
		--END IF;
	ELSE
		RAISE EXCEPTION 'NO SE HA GENERADO EL CORRELATIVO OPERACION BLOQUEDA';
	end if;
RETURN NEW;
END;$BODY$
  LANGUAGE plpgsql VOLATILE;

  CREATE  TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_COMPROBANTES_MOV
  BEFORE INSERT
  ON CAJA.TB_MOVIMIENTO
  FOR EACH ROW
  EXECUTE PROCEDURE COMMON.func_correlativo_comprobantes_mov();















CREATE OR REPLACE FUNCTION ALMACEN.FUNC_CORREL_ITEM_DET_INVENTORY()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(TB.ITEM) FROM ALMACEN.TB_DET_INVENTARIO tb WHERE 
			ID_ALMACEN=NEW.ID_ALMACEN AND
			ID_PRECIOS=NEW.ID_PRECIOS AND 
			ID_UNIDAD=NEW.ID_UNIDAD AND 
			ID_PRODUCTO =NEW.ID_PRODUCTO AND 
			ID_LISTA=NEW.ID_LISTA AND 
			ID_DOCUMENTO=NEW.ID_DOCUMENTO AND 
			SERIE=NEW.SERIE AND 
			NRO_INVENTARIO=NEW.NRO_INVENTARIO AND 
			FECHA=NEW.FECHA ; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.ITEM =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.ITEM = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.ITEM = (CORRELATIVO + 1);--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORREL_DET_INVENTORY
  BEFORE INSERT
  ON ALMACEN.TB_DET_INVENTARIO
  FOR EACH ROW
  EXECUTE PROCEDURE ALMACEN.FUNC_CORREL_ITEM_DET_INVENTORY();


  
select *from almacen.V_LISTAR_PRECIOS